package com.recharge.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.recharge.common.result.ResultDO;
import com.recharge.core.entity.MerchantEntity;
import com.recharge.domain.query.MerchantQueryDO;
import com.recharge.domain.vo.MerchantDO;

/**
 * <p>
 *  下游商家服务类
 * </p>
 *
 * @author reagan
 * @since 2020-08-19
 */
public interface MerchantService extends IService<MerchantEntity> {
    /**
     * 添加下游商家
     * @param domain
     * @return ResultDO
     */
    public ResultDO add(MerchantDO domain);

    /**
     * 编辑下游商家
     * @param domain
     * @return ResultDO
     */
    public ResultDO edit(MerchantDO domain);

    /**
     * 返回下游商家详情
     * @param id
     * @return ResultDO
     */
    public ResultDO get(String id);

    /**
     * 返回下游商家详情
     * @param merchantNo
     * @return ResultDO
     */
    public ResultDO getByMerchantNO(String merchantNo);

    /**
     * 删除商家信息
     * @param id
     * @param modifier
     * @return ResultDO
     */
    public ResultDO remove(String id, String modifier);


    /**
     * 查询商户列表
     * @param domain
     * @return ResultDO
     */
    public ResultDO find(MerchantQueryDO domain);

    /**
     * 分页查询商户列表详细信息
     */
    public ResultDO findListInfo(MerchantQueryDO domain);

    /**
     * 重置密钥
     * @param id
     * @param username
     * @return
     */
	public ResultDO resetSecretKey(String id, String username);

    /**
     * 发送回调
     */
    public void sendCallBack();

    /**
     * 写下游回调
     * @param serialNumber
     * @param orderNo
     * @param voucherNo
     * @param rechargeNumber
     * @param code
     * @param url
     */
    public ResultDO callback(String serialNumber, String orderNo, String rechargeNumber, String voucherNo,  Integer code, String message, String url);

    /**
     * 根据供应商ID查询可关联的代理商列表
     * @param providerId
     * @return
     */
    public ResultDO getListByProviderId(String providerId);

    /**
     * 获取商户的开户信息
     * @param id
     * @return
     */
    public ResultDO getMerchantInfo(String id);
}
